package com.atm.thirdplt.dao.mapper.sys;

import com.atm.thirdplt.common.core.domain.entity.AnesAnesthesiaPlan;
import com.atm.thirdplt.common.core.domain.entity.AnesOperationMaster;
import com.atm.thirdplt.common.core.domain.entity.AtmOperationScheduleMid;
import com.atm.thirdplt.common.core.domain.his.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 本地数据Dao持久接口类
 *
 * @author atm
 */
public interface LocalInfMapper {

    /** 删除临时表科室数据 重新同步最新的 */
    void delHisDept();

    /** 删除临时工作人员数据 准备重新同步最新的 */
    void delHisUser();

    /**
     * 根据条件删除本地检验主记录
     *
     * @param patId
     * @param visitId
     */
    void delLabMaster(@Param("patId") String patId, @Param("visitId") String visitId);

    /**
     * 根据条件删除本地检验详细记录
     *
     * @param testNoList
     */
    void delLabResult(@Param("testNoList") List<String> testNoList);

    /**
     * 删除手术预约临时表信息
     */
    void deleteHisOperSche();

    void delOperDic();

    /**
     * 根据时间范围查询本地手术预约申请信息
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<HisOperationSchedule> selOpertScheleLocal(@Param("startTime") String startTime,
                                                   @Param("endTime") String endTime);

    List<HisPatMasterIndex> selPatInfByIds(@Param("patIdList") List<String> patIdList);

    List<HisPatsInHospital> selPatInHosByIds(@Param("patIdList") List<String> patIdList);

    List<HisUsers> selUsersLocal();

    List<HisDeptDict> selDeptLocal();

    AnesOperationMaster selOperMaster(@Param("patientId") String patientId,
                                      @Param("visitId") String visitId,
                                      @Param("operId") String operId);

    void uptOperMaster(AnesOperationMaster master);

    void uptOperPlain(AnesAnesthesiaPlan plan);

    void intOperMaster(AnesOperationMaster master);

    void intOperPlain(AnesAnesthesiaPlan plan);

    // 通过中间转换查询手术预约数据
    HisOperationSchedule selOperScheMid(AtmOperationScheduleMid atmOperationScheduleMid);

    HisOperationSchedule selOperSche(@Param("patientId") String patientId,
                                     @Param("visitId") String visitId,
                                     @Param("scheduleId")String scheduleId);
}
